package com.intelligent.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.intelligent.pojo.ProductionTasks;

import java.util.Map;

/**
* 针对表【production_tasks(生产任务表)】的数据库操作Service
*/
public interface ProductionTasksService extends IService<ProductionTasks> {

    /**
     * 分页联表查询（包含条件查询），返回 Map 集合分页
     */
    IPage<Map<String, Object>> pageWithJoin(Page<?> page, Map<String, Object> params);

    /**
     * 根据 ID 联表查询，返回 Map（无需VO/DTO）
     */
    Map<String, Object> getByIdWithJoin(Long id);

    /**
     * 新增生产任务（任务编号自动生成）。
     * 入参直接使用 Map，key 对应数据库字段示例：
     * status, workOrderId, product, processNoR, processId, processManagementId, uId,
     * plannedStartDate, plannedCompletionDate, numberCompleted, numberCompletedProducts,
     * productionSchedule, numberRework, reworkRate, scrappedQuantity, scrapRate, finalProcess
     * 返回受影响行数。
     */
    int createTask(Map<String, Object> params);

    /**
     * 修改生产任务（根据 id）。
     * 入参与 XML 占位符一致：taskNo,status,workOrderId,product,processNoR,processId,processManagementId,uId,
     * plannedStartDate,plannedCompletionDate,numberCompleted,numberCompletedProducts,productionSchedule,
     * numberRework,reworkRate,scrappedQuantity,scrapRate,finalProcess,id
     */
    int updateTask(Map<String, Object> params);

    /**
     * 删除生产任务（根据 id）。
     * 对应 SQL: DELETE FROM production_tasks WHERE id = #{id}
     * 返回受影响行数。
     */
    int deleteTaskById(Long id);
}
